package com.hdc.mumuwei.micro_account_server.service;

import com.hdc.mumuwei.micro_account_server.po.Paging;
import com.hdc.mumuwei.micro_account_server.po.User;
import com.hdc.mumuwei.micro_account_server.utils.Result;

/**
 * @author Mumuwei
 * @Description
 * @create 2021/11/19 22:46
 */
public interface UserService {
    /**
     * 注册用户
     * @param user 注册用户信息
     * @return 注册成功提示
     */
    Result registerUser(User user);

    /**
     * 登录
     * @param user 用户名，密码
     * @return 登录用户的个人信息
     */
    Result login(User user);

    /**
     * 微信登录
     */
    Result loginWeixin(String openId);

    /**
     * 根据用户id获取用户信息
     * @param id 用户id
     * @return 用户对象
     */
    Result getUserById(Integer id);

    /**
     * 修改密码
     * @param user 用户id，密码，新密码
     * @return  修改成功提示
     */
    Result editPass(User user);

    /**
     * 通过邮箱重置密码
     * @param email 用户邮箱
     * @return 请求成功
     */
    Result resetPassByEmail(String email);

    /**
     * 用户修改本人信息
     * @param user 用户更新信息
     * @return 操作成功
     */
    Result editUserInfo(User user);

    /**
     * 验证是否本人邮箱
     * @param email 邮箱
     * @return 操作成功
     */
    Result confirmEmail(String email);

    /**
     * 管理员添加用户
     * @param user 注册用户信息
     * @return 添加成功提示
     */
    Result addUser(User user);

    /**
     * 管理员修改用户信息
     * @param user 用户信息
     * @return 操作成功
     */
    Result editUserInfoByAdmin(User user);

    /**
     * 管理员删除用户
     * @param id 被用户id
     * @return 操作成功
     */
    Result delUser(Integer id);

    /**
     * 管理员重置密码
     * @param user 用户id,新密码
     * @return 操作成功
     */
    Result resetPassByAdmin(User user);

    /**
     * 获取用户列表(不分页)
     * @return 用户列表（不分页）
     */
    Result getAllUsers();

    /**
     * 获取用户列表（分页）
     * @param paging 分页传参对象
     * @return 用户列表(分页)
     */
    Result getUserList(Paging paging);
}
